package com.mini.handler;

import com.mini.MiniResultSetHandler;
import com.mini.MiniRowProcessor;

import java.sql.ResultSet;
import java.sql.SQLException;

public class MiniBeanHandler<T> implements MiniResultSetHandler<T> {
    // 需要由这个处理器生成的Bean的类型
    private final Class<T> type;
    // 需要使用的行处理器
    private final MiniRowProcessor convert;

    // 如果没有传递行处理将使用默认的行处理器
    public MiniBeanHandler(Class<T> type) {
        this(type, ROW_PROCESSOR);
    }
    public MiniBeanHandler(Class<T> type, MiniRowProcessor convert) {
        this.type = type;
        this.convert = convert;
    }

    @Override
    public T handle(ResultSet resultSet) throws SQLException {
        // 将第一条记录封装成指定的Bean实例并返回
        return resultSet.next() ? this.convert.toBean(resultSet, this.type) : null;
    }
}
